// utils/date.js

export function formatTime(date) {
  if (!date && date !== 0) return ''; // 支持 0 时间戳

  let timestamp;

  try {
    if (date instanceof Date) {
      timestamp = date;
    } else if (typeof date === 'string' && date.includes('-')) {
      timestamp = new Date(date.replace(/-/g, '/'));
    } else if (typeof date === 'number' || /^\d+$/.test(date)) {
      // 处理数字型时间戳（包括字符串形式的数字）
      timestamp = new Date(parseInt(date, 10));
    } else {
      timestamp = new Date(date);
    }

    if (isNaN(timestamp.getTime())) {
      return '';
    }
  } catch (e) {
    console.error('时间格式化失败:', e, '原始值:', date);
    return '';
  }

  const now = new Date();
  const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
  const yesterday = new Date(today);
  yesterday.setDate(today.getDate() - 1);

  const inputDate = timestamp;
  const inputDay = new Date(inputDate);
  inputDay.setHours(0, 0, 0, 0);

  // 非同一年
  if (inputDate.getFullYear() !== now.getFullYear()) {
    return formatDate(inputDate, 'yyyy-MM-dd HH:mm');
  }

  // 昨天
  if (+inputDay === +yesterday) {
    return `昨天 ${formatDate(inputDate, 'HH:mm')}`;
  }

  // 今天
  if (+inputDay === +today) {
    return formatDate(inputDate, 'HH:mm');
  }

  // 同一年，非今天/昨天
  return formatDate(inputDate, 'MM-dd HH:mm');
}

// 格式化日期函数
export function formatDate(date, fmt) {
  const o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'H+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds(),
    'q+': Math.floor((date.getMonth() + 3) / 3),
    'S': date.getMilliseconds()
  };

  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
  }

  for (const k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) {
      const str = o[k] + '';
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? str : ('00' + str).substr(str.length)
      );
    }
  }

  return fmt;
}